#ifndef __HEADER_TYPES__
#define __HEADER_TYPES__

typedef char int8;
typedef short int16;
typedef int int32;
typedef long long int64;

typedef unsigned char byte;
typedef unsigned char uint8;
typedef unsigned short uint16;
typedef unsigned int uint32;
typedef unsigned int uint;
typedef unsigned long long uint64;

typedef int bool;

#define true 1
#define false 0

#define offset(type, member) (int64)(&(((type *)0)->member))

struct safe_array
{
    uint size;
    uint cap;
    byte data[];
};

typedef struct safe_array SAFE_array;

typedef enum
{
    ENCODE,
    DECODE
} CRYPTO_OPT;

#endif
